#pragma once

#define COMMS_3DCOAT

#define COMMS_WINDOWS
//#define COMMS_MACOS

//#define COMMS_DIRECTX

#ifndef COMMS_DIRECTX
#define COMMS_OPENGL
#endif

//#define COMMS_OPENAL

#define COMMS_JPEG
#define COMMS_PNG

#define COMMS_FBX

#ifdef COMMS_WINDOWS

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif // _WIN32_WINNT

#include <windows.h>
#include <CommDlg.h>
#include <stdio.h>
#include <math.h>
#include <typeinfo.h>
#include <Share.h>
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>
#include <process.h>
#include <Shlobj.h>
#include <zmouse.h>
#include <time.h>
#include <assert.h>

#define cAssert(x) assert(x)

#endif // COMMS_WINDOWS

#ifdef COMMS_MACOS
#include <unistd.h>
#include <math.h>
#include <typeinfo>
#include <sys/stat.h>
#include <sys/file.h>
#endif // COMMS_MACOS

namespace comms {

#pragma pack(1)

class cVec2;
class cVec3;
class cVec4;
class cMat3;
class cMat4;
class cAngles;
class cQuat;
class cRotation;
class cBounds;
class cSphere;
class cPlane;
class cColor;
class cStr;
class cRawMesh;
class cIO;
class cHash;

class cAnim;
class cModel;
class cCamera;

#include "cTypeDefs.h"
//#include "cAssert.h"
#include "cMath.h"
#include "cList.h"
#include "cVec2.h"
#include "cVec3.h"
#include "cVec4.h"
#include "cHash.h"
#include "cMat3.h"
#include "cMat4.h"
#include "cQuat.h"
#include "cAngles.h"
#include "cRotation.h"
#include "cStr.h"
#include "cVec.h"
#include "cColor.h"
//#include "cBitMap.h"

#include "cFile.h"

//#include "cSolver.h"
//#include "cSeg.h"
//#include "cTimer.h"
//#include "cSphere.h"
//#include "cPlane.h"
//#include "cBounds.h"
//#include "cSegBezier.h"
//#include "cExtrapolate.h"
//#include "cInterpolate.h"
//#include "cSpline.h"
//#include "cRect.h"
//#include "cInput.h"

//#include "cWidget.h"

struct cSpace {
	enum Enum {
		World, Object
	};
};
/*
#include "cMoveTool.h"
#include "cRotateTool.h"
#include "cScaleTool.h"

#include "cViewer.h"
#include "cImage.h"
#include "cVertex.h"
#include "cRender.h"
#include "cRenderGL.h"
#include "cRenderDX.h"
#include "cRawMesh.h"
#include "cBsp.h"
#include "cShadowVolume.h"
#include "cAnim.h"
#include "cModel.h"
#include "cCamera.h"
#include "cCollisionMesh.h"
//#include "cAudio.h"
//#include "cAudioAL.h"
*/
//#include "cIO.h"
/*

#include "cCodecBmp.h"
#include "cCodecDds.h"
#include "cCodecTga.h"
#include "cCodecJpeg.h"
#include "cCodecPng.h"

#include "cCodecAnim.h"
#include "cCodecMd5.h"
#include "cCodecFbx.h"
#include "cCodecObj.h"
#include "cCodecModel.h"
#include "cCodecCamera.h"

#include "cIsoSurface.h"
*/
//#include "cLog.h"
/*
#include "cWin32.h"
#include "cThread.h"

#include "cPlaneSurf.h"

//*****************************************************************************
// Controls
//*****************************************************************************
#include "cTheme.h"
#include "cWnd.h"
#include "cForm.h"
#include "cFpsDisplay.h"
#include "cButton.h"
#include "cBindButton.h"
#include "cSlider.h"
#include "cCheckBox.h"
#include "cComboBox.h"
#include "cEdit.h"
#include "cPanel.h"
#include "cSeparator.h"
#include "cEditSlider.h"
#include "cSliderRanged.h"
#include "cToolBar.h"
#include "cEdit2.h"
#include "cEdit3.h"
#include "cFilePn.h"
#include "cImageSwatch.h"
#include "cColorSwatch.h"
#include "cLabel.h"

//*****************************************************************************
// Class Explorer
//*****************************************************************************
#include "cClass.h"
#include "cClassExplorer.h"

#include "cClasses.h"
#include "cPathSpline.h"
#include "cEmitter.h"
#include "cSettings.h"

//#include "cMaterial.h"
*/

#pragma pack()
/*
// cMain
extern cStr cMain_Title; // Default window title
void cMain_SetWindowTitle(const char *Title);
void cMain_OnRender(const cRect &Viewport);
void cMain_OnPreInit();
void cMain_OnInit();
void cMain_OnFree();
void cMain_OnPostFree();
bool cMain_OnClose(); // You should return "true" to allow window closing
void cMain_Quit();
//extern cStr cMain_LoadSceneXmlFilePn; // For "Fishergirl" game only
bool cMain_OnSetInitialWindowSize(int *Left, int *Top, int *Right, int *Bottom);
void cMain_OnCrash();
*/
} // comms